package cn.edu.lingnan.before.controller;

import cn.edu.lingnan.common.JSONResult;
import net.minidev.json.JSONObject;
import net.minidev.json.JSONValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;

// 调用第三方接口 返回对应地区天气的json数据
@RestController
public class WeatherController {
    @Autowired
    private RestTemplate restTemplate;
    // 第三方接口在哪？
    //JsonObject ?? 如何将json字符串转成 JsonObject
    //  JsonValue.parse() 能够将字符串转成一个JSONObject 对象 ，该对象的get方法是继承map集合，即能通过key来获取其值，然后返回一个对象，因为值可能是一个字符串，也可能是一个map
    @GetMapping("/getWeatherInfo")
    public JSONResult<JSONObject> getWeatherInfo(){

        // 根据内网ip地址查询公网IP需要付费，暂时不不操作 直接将公网ip地址写死
//        本机公网ip  183.236.187.215
        String ip = " 183.236.187.215";
        String url = "http://apis.juhe.cn/ip/ipNewV3?ip="+ip+"&key=d51ce9e2b6ff5d9eca73325011ec2f72";
        JSONObject forObject = restTemplate.getForObject(url, JSONObject.class);
        System.out.println(forObject);
//        String reason = (String)forObject.get("reason");
//        System.out.println("原因："+reason);
       Map result = (Map)forObject.get("result");
        String city = result.get("City").toString();
        String weatherURL = "http://apis.juhe.cn/simpleWeather/query?city="+city+"&key=d94d49b77eb88cc3ea78759b5f7daa9e";
        JSONObject forObject1 = restTemplate.getForObject(weatherURL, JSONObject.class);
        if(forObject1 == null)
        {
            return new JSONResult<>(201,"获取天气信息失败");
        }
        return new JSONResult<JSONObject>(200,"获取天气信息成功",forObject1);

//        try {
//            InetAddress localHost = InetAddress.getLocalHost();
//        } catch (UnknownHostException e) {
//            e.printStackTrace();
//        }
    }
}
